// 文件名称: LoginController.java
// 创建日期: 2023-10-05
// 描述: 登录控制器类，负责处理登录界面的各种操作。

package org.wisdom.studentchoose;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.stage.Stage;

import java.io.IOException;

public class LoginController {

    @FXML
    private TextField usernameField; // 用户名输入框

    @FXML
    private PasswordField passwordField; // 密码输入框

    @FXML
    private Button loginButton; // 登录按钮

    @FXML
    private Button cancelButton; // 取消按钮

    /**
     * 处理登录事件
     * @param event 触发事件
     */
    @FXML
    public void handleLogin(ActionEvent event) {
        String username = usernameField.getText(); // 获取用户名
        String password = passwordField.getText(); // 获取密码

        if (HelloApplication.authenticateUser(username, password)) { // 验证用户名和密码
            try {
                // 加载主菜单界面的 FXML 文件
                FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("menu-view.fxml"));
                Scene scene = new Scene(fxmlLoader.load(), 400, 300); // 设置主菜单界面的大小
                Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow();
                stage.setScene(scene); // 设置新的场景
                stage.show(); // 显示新的窗口
            } catch (IOException e) {
                e.printStackTrace(); // 打印异常堆栈信息
            }
        } else {
            // 显示登录失败的提示
            Alert alert = new Alert(Alert.AlertType.ERROR);
            alert.setTitle("登录失败"); // 设置提示标题
            alert.setHeaderText(null); // 设置提示头文本为空
            alert.setContentText("用户名或密码错误"); // 设置提示内容
            alert.showAndWait(); // 显示提示对话框并等待用户关闭
        }
    }

    /**
     * 处理取消事件
     * @param event 触发事件
     */
    @FXML
    public void handleCancel(ActionEvent event) {
        System.exit(0); // 退出应用程序
    }
}
